
const autoprefixer = require('autoprefixer');
const pxtorem = require('postcss-pxtorem');
// 打包之后, 支持gzip压缩的浏览器会请求压缩包,不支持的会请求源文件
// 可加入需要的其他类型文件, 比如json。图片不要压缩,体积比原来还大
const CompressionWebpackPlugin = require('compression-webpack-plugin');
const productionGzipExtensions = ['js', 'css'];

module.exports = {
  // nginx配置二级域名： https://www.cnblogs.com/willLin/p/11937057.html
  // http://oss.hp-iot.cn/terminal/v1
  publicPath: process.env.NODE_ENV === 'production' ? '' : '/',
  // publicPath: '/',
  // outputDir: 在npm run build时 生成文件的目录 type:string, default:'dist'
  // outputDir: 'dist',
  // pages:{ type:Object,Default:undfind }
  devServer: {
    disableHostCheck: true, // 花生壳显示Invalid Host header让其不检查hostname。
    https: false, // https:{type:Boolean}
    open: false, // 配置自动启动浏览器
    hot: true,
    // proxy: 'http://localhost:4000' // 配置跨域处理,只有一个代理
    port: 8888,
    // host: 'wxtest.com',
    proxy: {
      // 配置多个代理,
      '/hybrid': {
        target: 'http://localhost:3010',
        // target: 'http://47.93.200.184:3010',
        ws: true,
        changeOrigin: true,
        // pathRewrite: {
        //   '^/vant': '/uni'
        // }
      },
      '/hy-assets': {
        target: 'http://localhost:3010',
        // target: 'http://47.93.200.184:3010',
        changeOrangin: true
      },
    },
    overlay: {
      // 配置叠加来显示警告和错误(浏览器遮罩层显示错误)
      // 只能做到眼不见心不烦,但是服务器不会热更新了,需手动刷新一次
      warnings: false,
      errors: false
    }
  },
  css: {
    loaderOptions: {
      // sass: {// 报错-写了postcss后就报错
      //   // 旧配置项
      //   // data: `@import "~@/assets/scss/variables.scss";`,
      //   // 最新配置
      //   prependData: `
      //     @import "@/assets/css/index.scss";
      //   `
      // },
      postcss: {
        plugins: [
          autoprefixer(),
          pxtorem({
            rootValue: 37.5,
            propList: ['*'],
            // 该项仅在使用 Circle 组件时需要
            // 原因参见 https://github.com/youzan/vant/issues/1948
            selectorBlackList: ['van-circle__layer']
          })
        ]
      }
    }
  },
  configureWebpack: {
    performance: {
      hints: 'warning',
      // 入口起点的最大体积 整数类型（以字节为单位）
      maxEntrypointSize: 50000000,
      // 生成文件的最大体积 整数类型（以字节为单位 300k）
      maxAssetSize: 30000000,
      // 只给出 js 文件的性能提示
      assetFilter: function (assetFilename) {
        return assetFilename.endsWith('.js')
      }
    },
    plugins: [
      new CompressionWebpackPlugin({
        // filename: '[path].gz[query]',
        algorithm: "gzip",
        test: new RegExp("\\.(" + productionGzipExtensions.join("|") + ")$"),
        // 对超过10k的数据进行压缩
        threshold: 10240,
        // 压缩比例： 0~1
        minRatio: 0.6
      })
    ]
  },
  // 生产环境禁用
  lintOnSave: process.env.NODE_ENV !== 'production'
}